﻿/*
 *      CentroVentasCore32  - CVCore32.dll
 *      
 *      Desarrollado por:
 *                      Francisco Acevedo.
 *                      David Avila.
 *                      José Pérez.
 *                      
 *      Todos los derechos reservados.
 */

/*
 *      CLASE: Ubicacion   
 *      
 *      En base a un codigo, Obtiene la ubicacion.
 *      
 * Notas de versión:
 * 
 * [18-01-2012]
 *      -   Creacion de la clase
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CVCore32.Class.Funciones.Ubicacion
{

    public enum TipoUbicacion { Region, Provincia, Comuna }

    public class Ubicacion
    {

        CVCore32.Class.Core.Sesion sesion = CVCore32.Class.Core.Sesion.GetInstace;
        Data.electrondbEntities context;

        public string GetUbicacion(string codigo, TipoUbicacion TipoCodigo, TipoUbicacion TipoNombre)
        {
            if (!String.IsNullOrWhiteSpace(codigo))
            {
                if (sesion.ServidorWeb)
                {
                    context = new Data.electrondbEntities("Data Source=72.18.135.49, 1533;Initial Catalog=electrondb;User Id=JotaEmePM;Password=ez881010;");
                }
                else
                {
                    context = new Data.electrondbEntities();
                }

                if (TipoCodigo == TipoUbicacion.Region)
                {
                    var u = (from Ubi in context.Region
                             where Ubi.RegionId.ToString() == codigo
                             select Ubi.Nombre);

                    return u.ToString();
                }
                else if (TipoCodigo == TipoUbicacion.Provincia)
                {
                    if (TipoNombre == TipoUbicacion.Provincia)
                    {
                        var u = (from ubi in context.Provincia
                                 where ubi.ProvinciaId.ToString() == codigo
                                 select ubi.Nombre);
                        return u.ToString();
                    }
                    if (TipoNombre == TipoUbicacion.Region)
                    {
                        var u = (from ubi in context.Provincia
                                 where ubi.ProvinciaId.ToString() == codigo
                                 select ubi.Region1.Nombre);
                        return u.ToString();
                    }
                }
                else if (TipoCodigo == TipoUbicacion.Comuna)
                {
                    if (TipoNombre == TipoUbicacion.Comuna)
                    {
                        var u = (from ubi in context.Comuna
                                 where ubi.ComunaId.ToString() == codigo
                                 select ubi.NombreComuna);
                        return u.ToString();
                    }
                    if (TipoNombre == TipoUbicacion.Provincia)
                    {
                        var u = (from ubi in context.Comuna
                                 where ubi.ComunaId.ToString() == codigo
                                 select ubi.Provincia1.Nombre);
                        return u.ToString();
                    }
                    if (TipoNombre == TipoUbicacion.Region)
                    {
                        var u = (from ubi in context.Comuna
                                 where ubi.ComunaId.ToString() == codigo
                                 select ubi.Provincia1.Region1.Nombre);
                        return u.ToString();
                    }
                }
                else
                {
                    throw new Exception("Formato mal expresado");
                }
            }
            else
            {
                throw new Exception("Ingrese un codigo");
            }

            return "Formato mal expresado";
        }


        public List<String> GetRegiones()
        {
            try
            {
                if (sesion.ServidorWeb)
                {
                    context = new Data.electrondbEntities("Data Source=72.18.135.49, 1533;Initial Catalog=electrondb;User Id=JotaEmePM;Password=ez881010;");
                }
                else
                {
                    context = new Data.electrondbEntities();
                }
                List<String> Regiones = new List<string>();

                Regiones = (from r in context.Region
                            orderby r.RegionId ascending
                            select r.Nombre).ToList<String>();

                return Regiones;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }


        public List<String> GetProvincias(string region)
        {

            if (sesion.ServidorWeb)
            {
                context = new Data.electrondbEntities("Data Source=72.18.135.49, 1533;Initial Catalog=electrondb;User Id=JotaEmePM;Password=ez881010;");
            }
            else
            {
                context = new Data.electrondbEntities();
            }
            List<String> Provincias = new List<string>();

            Provincias = (from r in context.Provincia
                        where r.Region1.Nombre == region
                        orderby r.ProvinciaId ascending
                        select r.Nombre).ToList<String>();

            return Provincias;
        }

        public List<String> GetComunas(string Provincia)
        {

            if (sesion.ServidorWeb)
            {
                context = new Data.electrondbEntities("Data Source=72.18.135.49, 1533;Initial Catalog=electrondb;User Id=JotaEmePM;Password=ez881010;");
            }
            else
            {
                context = new Data.electrondbEntities();
            }
            List<String> Comunas = new List<string>();

            Comunas = (from r in context.Comuna
                          where r.Provincia1.Nombre == Provincia
                          orderby r.ComunaId ascending
                          select r.NombreComuna).ToList<String>();

            return Comunas;
        }

public static int getComunaId(string comuna)
        {
            CVCore32.Class.Core.Sesion sesion = CVCore32.Class.Core.Sesion.GetInstace;
            Data.electrondbEntities context;
            if (sesion.ServidorWeb)
            {
                context = new Data.electrondbEntities("Data Source=72.18.135.49, 1533;Initial Catalog=electrondb;User Id=JotaEmePM;Password=ez881010;");
            }
            else
            {
                context = new Data.electrondbEntities();
            }

            var comId = (from c in context.Comuna
                         where c.NombreComuna == comuna
                         select c.ComunaId).SingleOrDefault();
            return Convert.ToInt32(comId);
        }
    }
}
